访问电脑版页面

导航:老古开发网手机版单片机AVR单片机

avr-gcc写的一段代码,用来驱动led

导读:
关键字:
/* 这是数字移位的c语言版本!*/
/* 请自己分析语言 */
/* 0--F.共计32个数字依次在8个数码管显示*/
/* 已经在hjavr实验开发系统上跳是通过 */

#include
typedef unsigned char u08;
typedef char s08;
typedef unsigned short u16;
typedef short s16;

void delay(u08 count);
void displed(u08 data,u08 lednu);
main()
{
outp(0xff,DDRB); /* 初始化显示 */
outp(0xff, PORTB); /* */
outp(0xff,DDRD); /* 关闭蜂鸣器*/
outp(0x7f, PORTD); /* */
u08 data,led;
int deu;
while(1)
{ for(data=0,led=0;data<32;data++,led++)
{ if(data%%8==0)led =0;
displed(data,led);
for(deu=0;deu<1800;deu++)
{delay(255);}
}
}
}
void delay(u08 count)
{
u08 delayk=255;
u08 k;
for(;count !=0;count--)
{
for(;delayk!=0;delayk--)
{k++;}
}
}
void displed(u08 data,u08 lednu)
{
u08 disnu[]={0xc0 ,0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82,0xf8,
0x80 ,0x90, 0x88, 0x83, 0xc6, 0xa1, 0x86,0x8e,
0x40 ,0x79, 0x24, 0x30, 0x19, 0x12, 0x02,0x78,
0x00 ,0x10, 0x08, 0x03, 0x46, 0x21, 0x06,0x0e};//这是led段码定义
u08 led[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//这是数码管位码定义
outp(0xff ,DDRA); //显示输出
outp(0xff ,DDRC);
outp(led[lednu],PORTA);
outp(disnu[data],PORTC);
delay(250);

}

来源:   作者:  2002/3/13 0:00:00
栏目: [ AVR单片机]

相关阅读

请问AVR的I/O口能直接作数码管位选吗?

 AVR用的晶振能低到多少? 

AVR单片机的RTOS-AVRX应用

怎样处理AVR 微控制器的NC引脚?

如何解决AVR单片机熔丝位锁死的问题

基于AVR单片机的现场可编程系统级集成电路

为什么选用AVR单片机来学习单片机

at90s8535 ad的输入端口中有不作ad的io脚是否可以做普通的io使用?

我最近在用AT90S2313时,EEPROM内的数据在上电时被冲掉?

为什么AVR单片机需要写1作为清0中断标志位

AT90S1200特点及功能简述

基于AVR单片机的医用臭氧治疗仪的设计与实现

基于AVR单片机的计算机智能节能插座设计

avr高手请进---向导生成的uart结构......

请教在线下载 

AVR单片机的串口查询设计

avr8535没有硬件对中断的sreg保护吗?是不是要在中断压栈sreg??谢谢!!

学习AVR(七)通用寄存器堆

AVR8515看门狗晶振为1MHZ,复位间隔应为16us--2048us,为何为16--2048ms?

AVR写EEPROM要多长时间